home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 March
/
EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso
/
earcd
/
util2
/
grabkick.lha
/
GrabKick.a
< prev
next >
Wrap
Text File
|
1996-01-05
|
3KB
|
123 lines
;**** GrabKick.a ******************************************
INCDIR AINCLUDE:
INCLUDE libraries/dosextens.i
INCLUDE lvo.i
INCLUDE dos/dos.i
INCLUDE workbench/startup.i
INCLUDE workbench/workbench.i
; Programmheader
;
; Name: GrabKick
; Author: SDI
; Distribution: PD
; Description: liest Kickstart aus und schreibt ihn in Datei
; Compileropts: -
; Linkeropts: -
; CLI-Parameter: -
;
; 1.2 07.08.95 : neue Berechnung für Revisionsnummer gleicht Rechen-
; fehler von MaxonC++ aus - Länge 880
; 1.3 03.12.95 : Mit Assembler neukompiliert - Länge 244
; 1.4 04.12.95 : etwas verkürzt - Länge 236
; 1.5 10.12.95 : etwas verkürzt - Länge 228
; 1.6 19.12.95 : läuft auch von WB aus - Länge 300
; 1.7 05.01.96 : CLI Parameter Filename eingebaut, Fehler entfernt
; Länge 332
;**** Programm ********************************************
SECTION "0",CODE
SUBQ.W #1,D0 ; SUBQ statt Offset -1, da TST statt CMP #1
MOVE.B #0,0(A0,D0.W) ;Letztes Zeichen 0 - CString
MOVEA.L A0,A5
TST.W D0 ;Wenn nur ein Zeichen, dann kein Param. angegeben!
BNE.B GetTask
SUBA.L A5,A5 ;Name entfernen
GetTask SUBA.L A1,A1 ;A1=0 = eigener Task
MOVEQ #0,D7
MOVEA.L 4.W,A6
JSR _LVOFindTask(A6) ;wo sind wir?
MOVEA.L D0,A4 ;Adresse retten
TST.L pr_CLI(A4) ;Laufen wir unter WB?
BNE.B fromCLI
LEA pr_MsgPort(A4),A0
JSR _LVOWaitPort(A6) ;Warte auf Start-Message
LEA pr_MsgPort(A4),A0
JSR _LVOGetMsg(A6) ;Hole Msg
MOVE.L D0,D7 ;D7 - WBStartUp Message
fromCLI LEA KICKEND(PC),A2 ;A2 - KickStr-Ende
MOVEQ #33,D0
LEA DOSNAME(PC),A1
JSR _LVOOpenLibrary(A6)
TST.L D0
BEQ.W ENDE ;Librarybase != 0 ?
MOVEA.L D0,A6 ;DosBase -> A6, da nur Dos-Calls
TST.L D7
BEQ.B NoWB
MOVEA.L D7,A0
MOVEA.L sm_ArgList(A0),A0
CMPA.L #0,A0
BEQ.B ENDE
MOVE.L (A0),D1
JSR _LVOCurrentDir(A6)
NoWB MOVE.L $00FFFFEC.L,D3 ;D3 - RomSize
MOVEA.L #$01000000,A3
SUBA.L D3,A3 ;A3 - Romstart
MOVEQ #0,D4
MOVE.W 12(A3),D4 ;D4 - Romvers
MULU #1000,D4
ADD.W 14(A3),D4 ;D4 - Fullversion
LOOP
MOVE.L D4,D2
DIVU #10,D2 ;durch Zehn teilen
MOVE.W D2,D4 ;Ergebnis nach D4
SWAP D2
ADD.B D2,(A2) ;Rest in Namensfile
SUBQ.L #1,A2 ;Zähler 1 weiter zurück
TST.L D4
BNE.B LOOP
;Schleifenende
MOVE.W #MODE_NEWFILE,D2 ;Modus-Parameter
MOVE.L A5,D1 ;wenn CLI-Param, dann nutzen
BNE.B Open
LEA KICKSTR(PC),A2
MOVE.L A2,D1 ;sonst Name-Parameter
Open JSR _LVOOpen(A6)
MOVE.L D0,D4 ;D4 - Filehandle
BEQ.B CLEANUP
; Anzahl-Parameter D3 hat schon Wert
MOVE.L A3,D2 ;Puffer-Parameter
MOVE.L D4,D1 ;Filehandle-Parameter
JSR _LVOWrite(A6)
MOVE.L D0,D2 ;D2 - Write Rückgabe
MOVE.L D4,D1 ;Filehandle-Parameter
JSR _LVOClose(A6)
CMP.L #$FFFFFFFF,D2 ;D2 == -1 --> File löschen
BNE.B CLEANUP
MOVE.L A2,D1
JSR _LVODeleteFile(A6)
CLEANUP
MOVEA.L A6,A1
MOVEA.L 4.W,A6
JSR _LVOCloseLibrary(A6)
ENDE
TST.L D7 ;von Workbench ?
BEQ.B _exit ;nein - war CLI
MOVEA.L 4.W,A6
JSR _LVOForbid(A6) ;Schutzmaßnahme
MOVEA.L D7,A1 ;Message holen
JSR _LVOReplyMsg(A6)
MOVEQ #0,D0
_exit RTS
CSTRING '$VER: GrabKick 1.7 (05.01.96) (PD) by SDI'
DOSNAME CSTRING 'dos.library'
KICKSTR DC.B 'kick0000'
KICKEND CSTRING '0'
END